# Base class for supervised learning models

class SupModel:
    """
    @brief 基于监督学习的模型基类
    @details
    该类定义了监督学习模型的基本接口，包括训练（fit）和预测（predict）方法。
    子类需要实现这些方法以完成具体的模型训练和预测逻辑。
    """
    def fit(self, X, y, sample_weight=None):
        """
        @brief 训练模型
        @param X: 特征数据
        @param y: 标签数据
        @param sample_weight: 样本权重，可选
        @exception NotImplementedError: 子类需要实现此方法
        """
        raise NotImplementedError("fit方法需要在子类中实现")

    def predict(self, X):
        """
        @brief 对测试数据进行预测
        @param X: 测试特征数据
        @return: 预测标签
        @exception NotImplementedError: 子类需要实现此方法
        """
        raise NotImplementedError("predict方法需要在子类中实现")